﻿using System;

namespace Opo.Perspective.Core
{
    /// <summary>
    /// Represents a Perspective entity (e.g. mail message, contact, chat message, ...)
    /// </summary>
    public interface IPerspectiveEntity
    {
        /// <summary>
        /// Gets or sets the ID.
        /// </summary>
        /// <value>The ID.</value>
        Guid ID { get; set; }
        /// <summary>
        /// Gets or sets the title.
        /// </summary>
        /// <value>The title.</value>
        string Title { get; set; }
        /// <summary>
        /// Gets the summary of the entity
        /// </summary>
        /// <value>The summary of the entity</value>
        string Summary { get; }
        /// <summary>
        /// Gets or sets the date.
        /// </summary>
        /// <value>The date.</value>
        DateTime Date { get; set; }
        /// <summary>
        /// Gets or sets a value indicating whether this entity has been read.
        /// </summary>
        /// <value><c>true</c> if this entity has been read; otherwise, <c>false</c>.</value>
        bool IsRead { get; set; }
        /// <summary>
        /// Gets or sets a flag for the entity.
        /// </summary>
        /// <value>A flag.</value>
        IFlag Flag { get; set; }
        /// <summary>
        /// Gets or sets a tags collection.
        /// </summary>
        /// <value>A collection of tags</value>
        TagCollection Tags { get; set; }
    }
}